CISCN 2022 RegionQuals

西南赛区 Misc

FindMe

零宽字符隐写

http://330k.github.io/misc_tools/unicode_steganography.html

将附件解压后可以得到如下文本。

‍‍‍‍‍‍⁢‍⁣⁢‍‍‍‍‍‍‍⁢⁢‍‍‍‍‍‍‍‍‍⁢‍⁢⁣⁢‍‍‍‍‍‍⁢‍⁣⁢⁢‍‍‍‍‍‍⁢⁢⁢⁣‍‍‍‍‍‍‍⁢‍⁣⁢‍‍‍‍‍‍‍⁢‍⁢⁣⁢‍‍‍‍‍‍⁢⁢‍⁣⁣‍‍‍‍‍‍⁢‍⁣‍⁣‍‍‍‍‍‍⁢‍⁢⁢⁣‍‍‍‍‍‍⁢‍⁣⁢‍‍‍‍‍‍‍⁢⁢‍‍‍‍‍‍‍‍‍⁢‍⁢⁣⁢‍‍‍‍‍‍⁢‍⁣⁢⁢‍‍‍‍‍‍⁢⁢⁢⁣⁣‍‍‍‍‍‍‍‍⁢‍⁢‍‍‍‍‍‍⁢⁢‍⁣⁢‍‍‍‍‍‍⁢‍⁣‍⁣‍‍‍‍‍‍⁢‍⁣‍‍‍‍‍‍‍‍⁢⁢‍⁣‍‍‍‍‍‍‍⁢‍⁣‍⁣‍‍‍‍‍‍⁢⁢‍⁣⁣‍‍‍‍‍‍‍⁣‍⁢⁢‍‍‍‍‍‍⁢⁢⁢⁢⁢‍‍‍‍‍‍⁢⁢‍⁢‍‍‍‍‍‍‍⁢⁢⁢‍‍‍‍‍‍‍‍⁢‍⁢⁢⁣‍‍‍‍‍‍⁢‍⁣⁣⁣Hello‍‍‍‍‍‍⁢⁢‍‍⁣‍‍‍‍‍‍⁢⁢‍⁢‍‍‍‍‍‍‍⁢⁢⁢‍⁣‍‍‍‍‍‍⁢‍⁢⁢⁣‍‍‍‍‍‍⁢⁢‍⁣⁣‍‍‍‍‍‍⁢‍⁣⁢⁣‍‍‍‍‍‍⁢‍⁣⁣‍‍‍‍‍‍‍⁢⁢‍⁣⁢‍‍‍‍‍‍⁢‍⁢⁢⁣‍‍‍‍‍‍⁢⁢‍‍⁣!‍‍‍‍‍‍⁢⁢‍⁢‍‍‍‍‍‍‍⁢⁢‍⁣⁣‍‍‍‍‍‍⁢‍⁢⁢⁣ ‍‍‍‍‍‍⁢⁢‍⁢⁢‍‍‍‍‍‍⁢‍⁢⁣⁢‍‍‍‍‍‍⁢⁢‍⁣⁢‍‍‍‍‍‍⁢⁢‍⁣⁢Here‍‍‍‍‍‍⁢⁢⁢‍⁣‍‍‍‍‍‍⁢‍⁣‍⁢ and There?

使用 CyberChef Receipt 处理可以发现其中有 \u200D、\u2062、\u2063 三种字符。因此使用对应的选项进行解隐写。

Escape_Unicode_Characters('\\u',false,4,true)

解隐写后可以得到如下内容。

flag{fate_flag}
secret:you_know_this_not_passwd

混合文件处理

将 secret 用于解压压缩包可得一个 vhd 文件。将虚拟磁盘挂载,可以解压出一个混合的文件和一张图片。写脚本将混合的图片分离。

file = open("XIHU", "rb").read()
file += b"\x00"
image1 = []
image2 = []
dFlag = False
for x in range(0, len(file), 2):
    if len(image1) > 2 and (image1[-2] + image1[-1]) == b"\xFF\xD9":
        dFlag = True
    if dFlag:
        image2.append(file[x].to_bytes(1, "big"))
    else:
        image1.append(file[x].to_bytes(1, "big"))
    image2.append(file[x + 1].to_bytes(1, "big"))
image2 = b"".join(image2)[:-1]
image1 = b"".join(image1)
open("2.jpg", "wb").write(image1)
open("1.png", "wb").write(image2)

运行脚本后可以得到两张图片。

差集处理图片

将图片 SUB 后可以得到下图。

从图中得出如下信息。

P@33W4

解 jphide 隐写

将上述的信息用于对 meijing.jpg 的 jseek 可得一张 GIF 动图。将其抽帧后使用 montage 拼合,能得到一个二维码。

montage *.bmp -tile 5x5 -geometry +0+0 test.png

将二维码使用如下 CyberChef Receipt 处理可得 flag。

Parse_QR_Code(false)
From_Base64('A-Za-z0-9+/=',true,false)
flag{Haha_Y@u_FindMe_GIve_The_FlagToYou}

EASYFORENSICS

内存取证得到 img

对附件使用 imageinfo 得到如下信息。

Volatility Foundation Volatility Framework 2.6.1
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86
                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)
                     AS Layer2 : FileAddressSpace (/mnt/hgfs/g/ciscn/es/EASYFORENSICS/CTFWindows7-8f09ab24.vmem)
                      PAE type : PAE
                           DTB : 0x185000L
                          KDBG : 0x83d37be8L
          Number of Processors : 4
     Image Type (Service Pack) : 0
                KPCR for CPU 0 : 0x83d38c00L
                KPCR for CPU 1 : 0x807ca000L
                KPCR for CPU 2 : 0x8b505000L
                KPCR for CPU 3 : 0x8b540000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2022-05-31 06:22:54 UTC+0000
     Image local date and time : 2022-05-31 14:22:54 +0800

采用 Win7SP1x86 为 profile 运行 pslist 得到如下关键信息。

Offset(V)  Name                    PID   PPID   Thds     Hnds   Sess
---------- -------------------- ------ ------ ------ -------- ------ 
0x87258488 cmd.exe                2296   2864      1       20      1
0x86097030 iexplore.exe           3368   2864     15      655      1
0x8610ed40 iexplore.exe           4064   3368     21      581      1

cmdscan 得到内容如下。

CommandProcess: conhost.exe Pid: 2784
CommandHistory: 0x260f20 Application: cmd.exe Flags: Allocated, Reset
CommandCount: 21 LastAdded: 20 LastDisplayed: 20
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x5c
Cmd #9 @ 0x2625a0: Here is no flag!
Cmd #10 @ 0x25b3e0: BUT
Cmd #11 @ 0x25b3f0: I
Cmd #12 @ 0x25b400: CAN
Cmd #13 @ 0x261f10: GIVE
Cmd #14 @ 0x25b410: YOU
Cmd #15 @ 0x25b420: A
Cmd #16 @ 0x25b430: AN
Cmd #17 @ 0x25ab30: IMPORTANT
Cmd #18 @ 0x25ab50: INFORMATION
Cmd #19 @ 0x25d170: fa5ef7676006afd4748becb7e68b0aed
Cmd #20 @ 0x25ab90: good luck!

将其中的 MD5 解码可以得到 789C。

filescan 得到下列关键文件。

Offset(P)            #Ptr   #Hnd Access Name
------------------ ------ ------ ------ ----
0x000000002e8c0880      8      0 RW-r-- \Device\HarddiskVolume2\flag\hint.txt.txt
0x000000002e90f038      8      0 RW-r-- \Device\HarddiskVolume2\fffffflag\baidunetdisk.txt
0x000000002e9fe628      8      0 RW---- \Device\HarddiskVolume2\Users\xiaoming\Desktop\zippasswd.txt

dumpfiles 将文件提取出来,可以得到如下信息。

// hint.txt.txt
Firstly, you should pay attention to the YesYes….zip.But it may not have been placed in this computer~~1~~~.
// baidunetdisk.txt
Look at me ====> https://pan.baidu.com/s/1gdNcq1VCCKRTD3_MtDB79Q

But you should find Extraction code in this computor

将 789C 作为提取码下载文件可得 flag.img。

图片处理

zippasswd.txt 可以得到如下内容。

74e405980d0a1a0a0000000d49484452000001f4000001f4080200000044b448dd000000097048597300000ec400000ec401952b0e1b000009ea49444154789ceddd416e23391405c1d2c0f7bf72cf7e06688382497fa622f6b64aaa5282aba7d79f3f7f1e005afef9ed0b00e0e7893b4090b80304893b4090b80304893b4090b80304893b4090b80304
...
7780207107081277802071070812778020710708127780207107081277802071070812778020710708127780207107085ade7307603e2777802071070812778020710708127780207107081277802071070812778020710708127780207107081277802071070812778020710708fa17f00c58e5a20f65e10000000049454e44280624ea

将其使用如下 CyberChef Receipt 处理后修正文件头和文件尾。

From_Hex('Auto')

将二维码的内容扫描可得如下内容。

password_is_passwd

将 flag.img 使用 FTK Imager 挂载后提取出压缩文件。

拼图

将压缩文件解压后可得 377 个文本,写脚本将其转换为图片。

from PIL import Image
for _ in range(377):
    image = Image.new("RGB", (40, 40), "white")
    lines = open(f"./YesYesLookAtme/{_}.txt", "r")
    for x in range(40):
        for y in range(40):
            r, g, b = tuple(lines.readline().split(" "))
            image.putpixel((x, y), (int(r), int(g), int(b)))
    image.save(f"./YesYesLookAtme/png/{_}.png")

将图片使用 montage 拼接。

montage *.png -tile 29x13 -geometry +0+0 test.png

按照如下指令用 gaps 拼图。

gaps --image=./test.png --generations=20 --population=377 --save

图片的右下角可以得到如下信息。

It_is_very_import

babyusb

压缩包分离

打开流量包可以发现报错,010 Editor 打开后可以发现末尾有一个压缩文件,将其分离出来。

USB Leftover Data 提取

WireShark 分析流量包可以发现其中大多是 2.9.x 的流量,其 Descriptor Response 描述为 Logitech 的 0xc53f 设备。

根据驱动的描述,此设备的名称是 Logitech lightspeed receiver。推测为无线鼠标一类的设备。

先将 2.9.2 的流量分组提取,后将流量数据使用如下指令提取出来。

tshark.exe -r babyliteOn.pcapng -T fields -e usb.capdata > usbdata.txt

Logitech 0xc53f 鼠标流量分析

按照流量的变化特征推断出下图。

把流量稍作整理,去除前三位字符。写脚本将三种按键状态下的信息提取出来画图。

nums = []
keys = open('usbdata.txt','r')
posx = 0
posy = 0
for line in keys:
    if len(line) != 24:
        continue
    x = int(line[9:11] + line[6:8], 16)
    y = int(line[15:17] + line[12:14], 16)
    if x > 32767:
        x -= 65536
    if y > 127:
        y -= 65536
    posx += x
    posy += y
    btn_flag = int(line[0:2], 16)  # 1 for left , 2 for right , 0 for nothing
    if btn_flag == 0:
        print(posx, posy)
keys.close()

鼠标左键轨迹如下。

43e8f3359250d2ab

鼠标右键轨迹如下。

9cc13d19f942aabc

将 43e8f3359250d2ab 作为密码解压压缩包即可得到一张图片。

解 LSB 隐写

对图片使用 cloackedpixel 以 9cc13d19f942aabc 解隐写即可得到 flag。

cloackedpixel extract stego.png output.txt 9cc13d19f942aabc
flag{96225469-50d5-4ab7-8102-943f914c18a7}

华中赛区 Misc

xpxp

内存取证拿 hint

对内存镜像使用 dumpfiles 提取出所有的 egg。

0x00000000020273b8      1      0 R--rwd \Device\HarddiskVolume1\Program Files\xerox\egg4.txt
0x0000000002137248      1      0 R--r-- \Device\HarddiskVolume1\Documents and Settings\Administrator\My Documents\egg1.rtf
0x000000000232d938      1      0 R--rwd \Device\HarddiskVolume1\Program Files\Messenger\egg5.txt
0x0000000002409e28      1      0 R--rwd \Device\HarddiskVolume1\Documents and Settings\Administrator\My Documents\My Pictures\egg3.bmp
0x000000000251c538      1      0 R--rwd \Device\HarddiskVolume1\Documents and Settings\Administrator\My Documents\My Music\egg2.txt

可以得出以下信息。

你知道异或加密吗。异或是对两个运算元的一种逻辑分析类型,符号为XOR或EOR。据说在电脑某处放了部分代码,内容是对一个文件进行异或,但是有个letter不知到放到哪里了,好像是某个彩蛋吧。你能解出来吗。

听说对图片,有一种加密方式,叫做图像像素置换加密。置换加密算法是一种最简单的加密算法,原理就是将字母表中的字符替换成另一个字母表中的字符。那么像素置换加密是怎么样的呢。好像有一个工具集成了这个加密。但是我忘记了。据说放到邮箱草稿里面了。

Do you know what the Chinese meaning of ankle is? flag is that.

Remember to convert the answer to a 32-bit lowercase MD5 value.

According to Homer's epic, the hero Achilles is the precious son of the mortal Polus and the beautiful fairy Thetis.
It is said that her mother Tethys carried him upside down into the Styx river when he was just born, so that he could be invulnerable. 
Unfortunately, due to the rapid flow of the Ming River, his mother didn't dare to let go of his heel.
The heel held by his mother was accidentally exposed outside the water, so the heel was the most vulnerable place, leaving the only "dead hole" in his body, so he buried the disaster. 
When he grew up, Achilles fought bravely. When he went to attack the city of Troy (the story of Trojan horse slaughtering the city), the brave Achilles singled out the Trojan general Hector, killed him and dragged his body to demonstrate. 
But later, after conquering Troy, Achilles was attacked by an arrow by Hector's brother-in-law Paris and hit his ankle - the hero fell to the ground and died at the moment of shaking.
ankle, ankle, I love ankle.The password is ??k1eAn???

将可疑文件 exp 提取出来后可得 python 脚本。

python2 vol.py -f imgs/xpxp.raw --profile=WinXPSP3x86 dumpfiles -Q 0x000000000238c9d0 -D imgs
Volatility Foundation Volatility Framework 2.6.1
DataSectionObject 0x0238c9d0   None   \Device\HarddiskVolume1\Program Files\Code\exp

还能找到 flagData.zip 文件,将其提取出来后可得 fffflllaag.dat。

0x000000000240cad8      1      0 R--rw- \Device\HarddiskVolume1\Documents and Settings\All Users\Documents\flagData.zip

除此之外还有一张图片。

0x00000000022d08d8      1      0 R--r-- \Device\HarddiskVolume1\Documents and Settings\All Users\Documents\My Pictures\letter_PixelReplacement.png

像素置换解密算法

从 egg 的提示中能找到暗示使用了 BE-BerylEnigma 工具。使用其进行变换后可得下图。

异或修复文件

将脚本修改从而解密文件。

f = open('./fffflllaag.dat', 'rb').read()
new = open('./flag.zip', 'ab')

letter = 'A'
secret = int(letter,16)
print(secret)
for i in f:
    n = int(i) ^ secret
    new.write(int(n).to_bytes(1, 'big'))

解密文件后可以得到压缩文件 flag.zip,从 egg 里面的 "The password is ??k1eAn???" 猜解其密码为 Ank1eAnk1e,解压后能得到如下信息。

The answer to egg1 is : You are the only weakness in my body
This is also the answer to flag

结合 egg 的暗示后将 "You are the only weakness in my body" MD5 后即为 flag。

flag{47155018947fbed1987313fe2d02e0bb}

ZIPCracker

将图片解压后进行标准压缩。

对压缩包进行明文攻击,得到压缩包密码 crQ2#!。

将压缩包密码用于解压原压缩包即可得到 flag。

flag{310fbb0e6f812d2588689257afa6437d}

PNGCracker

IHDR 区段的修正

附件中的图片修一下高度得到压缩包密码 cr4ckthisP4ssworD!@#。

把密码用于解压压缩包,得到一张图片。

zsteg 解隐写

对图片 zsteg 可以得到 flag。

flag{3bfdf2004fb06399b58998e597781fca}

数据流中的秘密

WireShark 分析流量包,TCP 流量居多,因此上分析脚本。

ADB 文件传输提取

TCP 流 2 处存在 ADB 传输的压缩包。

[+][44] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 53 45 4E 44 15 00 00 00  2F 73 64 63 61 72 64 2F  SEND..../sdcard/
00000010: 63 74 66 2E 72 61 72 2C  33 33 32 30 36           ctf.rar,33206
[+][45] 127.0.0.1:5037 --> 127.0.0.1:60244
[>] ACK
[+][46] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 44 41 54 41 00 00 01 00  52 61 72 21 1A 07 01 00  DATA....Rar!....
00000010: 79 59 37 15 0C 01 05 08  00 07 01 01 EA E9 8A 80  yY7.............
00000020: 00 4D 1E A8 8B 58 02 03  3C F0 01 04 D7 02 20 BF  .M...X..<..... .
[BRIEF IN TERMINAL ... BRIEF IN TERMINAL]
0000FFB0: DC DC 51 A0 66 2F E0 3D  6E 42 68 1D E1 50 8F 7C  ..Q.f/.=nBh..P.|
0000FFC0: 29 CD 99 DD 87 6B 5B 6D  C1 31 1A A7 79 56 52 65  )....k[m.1..yVRe
0000FFD0: C8 93 67 13 5B DB 04                              ..g.[..
[+][47] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: D2 97 0B 9F A3 EA E4 26  DF 9E 97 15 C4 4A 47 DF  .......&.....JG.
00000010: 52 FC 03 D2 45 5F F3 14  79 36 AA 40 92 6E 93 21  R...E_..y6.@.n.!
00000020: 14 82 86 FA 57 F2 FA A1  C5 30 49 85 4F 52 68 D8  ....W....0I.ORh.
00000030: 69                                                i
[+][48] 127.0.0.1:5037 --> 127.0.0.1:60244
[>] ACK
[+][49] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 44 41 54 41 00 00 01 00  86 FF B9 DC 32 78 CF 5D  DATA........2x.]
00000010: 7E D9 3B A9 8F C8 CE 51  39 C0 9E EE 51 D6 69 59  ~.;....Q9...Q.iY
00000020: 38 6A 70 FB FA 5E 08 22  FE DF 11 3C 20 F2 72 5A  8jp..^."...< .rZ
[BRIEF IN TERMINAL ... BRIEF IN TERMINAL]
0000FFB0: B6 01 54 01 5F 56 53 EC  BA A6 5C DD 0B 21 88 B3  ..T._VS...\..!..
0000FFC0: E0 F1 B9 93 5A 6D 12 AF  50 3D E8 54 2C 78 CB 1C  ....Zm..P=.T,x..
0000FFD0: 5B 7D 2E BE B8 87 27                              [}....'
[+][50] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 78 C8 9D B8 24 87 23 93  D3 7E 3B 4F D6 21 B2 7A  x...$.#..~;O.!.z
00000010: 55 1F 89 70 B4 D9 FC B2  64 C3 DB D5 0D 08 AA B3  U..p....d.......
00000020: A6 10 C4 29 95 41 E1 26  26 B1 E3 09 DB EC 82 49  ...).A.&&......I
00000030: 5D                                                ]
[+][51] 127.0.0.1:5037 --> 127.0.0.1:60244
[>] ACK
[+][52] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 44 41 54 41 75 B5 00 00  26 90 09 42 6A 89 90 2A  DATAu...&..Bj..*
00000010: 32 E4 2F 66 32 34 92 CA  BF ED DF AF 33 07 1D AA  2./f24......3...
00000020: 9C 63 E7 AB 22 CA 6B B7  C8 03 18 0D 97 45 D6 38  .c..".k......E.8
[BRIEF IN TERMINAL ... BRIEF IN TERMINAL]
0000B550: 2E 39 18 0E 1E 0C 83 88  5C 57 BA 10 B1 E2 97 83  .9......\W......
0000B560: 18 ED DB D7 E5 75 D9 95  53 30 0A 03 02 76 C3 83  .....u..S0...v..
0000B570: DA FA 77 D8 01 1D 77 56  51 03 05 04 00           ..w...wVQ....
[+][53] 127.0.0.1:5037 --> 127.0.0.1:60244
[>] ACK
[+][54] 127.0.0.1:60244 --> 127.0.0.1:5037
00000000: 44 4F 4E 45 5A 2F 9B 62                           DONEZ/.b

将垃圾数据剔除后得到一个压缩文件。

H264 流提取

流 14 处有 scrcpy 传输的 H264 流,将数据导出后使用 ffmpeg 打包成 MP4 文件。

ffmpeg -i in.h264 output.mp4

得到一个滑动二维码的图片,抽帧后拼合得到二维码。

将二维码扫描可得到如下信息。

695c630e-523c-4098-8ff8-0bac8f8b22d7

git 文件信息提取

将上述信息作为密码解压后能得到一个 .git 和如下图片。

.git 的 config 里可以得到如下信息。

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = https://github.com/KuroLabs/stegcloak.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[password backup]
    password = just4fun

解零宽字符的隐写

https://stegcloak.surge.sh

得到的图片末尾包含如下信息。

KRUGKIDXNBSWK3BA4KAI3YUARXRIBDHCQGROFANE4KA2HYUARXRIDIXCQGROFAEN4KAI3YUARTRIDIPCQCG6FAEM4KAI3YUBUHRIBDHCQGROFANC4KAIZYUBULRIBDPCQGROFAEM4KAI3YUBULRIDIPCQCG6FAEM4KA2FYUARXRIDJHCQCG6FANB4KA2HYUARTRIDJHCQGROFAEN4KAI3YUARXRIDIXCQGROFANE4KA2JYUARXRIDJHCQGROFAEM4KA2JYUBUTRIDIPCQCG6FANB4KAI3YUBUTRIDIXCQGSOFAND4KA2DYUARXRIDJHCQCGOFAEN4KA2FYUBUHRIDIXCQCGOFANC4KAIZYUBULRIDIPCQGROFAEN4KAI3YUBUHRIBDPCQCG6FANB4KAIZYUARXRIDIXCQCG6FANB4KAI3YUARTRIDIXCQGROFANE4KAIZYUBUHRIDIXCQGROFANC4KA2HYUARTRIDIXCQCGOFANB4KAI3YUBUTRIDIPCQCGOFANB4KAIZYUBULRIDIPCQCG6FANC4KAI3YUARXRIDIXCQGROFANC4KA2FYUBUTRIDIPCQCG6FANC4KA2DYUBUPRIDJHCQCG6FAND4KAIZYUBULRIBDPCQCGOFAEN4KA2FYUARXRIBDHCQGROFANC4KAI3YUARTRIDIXCQCG6FAEM4KAI3YUARXRIDIXCQGQ6FAEN4KA2HYUBUTRIDIXCQGR6FANC4KA2FYUBUTRIDIPCQCGOFANC4KA2DYUBULRIBDPCQGROFANDOR2XE3TTFQQG433UNBUW4ZZANFZSAZLWMVZCA3TFO4XA====

Base32 解码一次可以得到一串字符串。使用 config 里 repo 的在线工具配合密码解码后得到 flag。

flag{487745369bbcd1e2d663b9fd136d01d0}

东北赛区 Misc

Conversion

ROT-6 与 Base

解压附件得到如下内容。

4H3550444L505G4I4J52585734564G474H355644515633514H5G4658453233514H59374732554G584H5936574132444K4H5G46544J5933344H5G5146515232464G424K464H58333449343646343J3J3J

将附件经过如下的 CyberChef Receipt 处理即可得到 flag。

ROT13(true,true,false,-6)
From_Hex('Auto')
From_Base32('A-Z2-7=',false)
From_Base85('0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~')
flag{22be72da5c9c847c2b8a029ced6603c4}

Pixel

读数

解压附件可得如下信息。

红方炮二平五,黑方的炮八平五,红马二进三,黑马八进七,红方车一进一,黑方车九平八


小明说自己不是很会下象棋,对于棋谱只看的懂其中的数字
看不懂其他的,因此他就把所有的数字都汇总起来当成隐藏压缩包的密码
聪明的你肯定看得懂

解压所得的压缩包密码为 258523871198,解压后得到 flag.dat。

爆破异或

使用 CyberChef 的 XOR BruteForce 可以得出该文件和 0x9e 异或可以得到一个压缩文档。同时在压缩包的备注中可以发现如下信息。

你知道01嘛
10110010110111101110101010111110100001101100001011011100110111001101111011101000101111101100110011010010110111001100100010111110110100101110100

猜解 01 Binary

将上述数据的前面添加一个 0 后 From Binary 可以得到如下信息。

You_Cannot_find_it

将其作为压缩包密码解压后可得图片一张。

PixelJihad 解隐写

https://sekao.net/pixeljihad

将一样的密码用于 PixelJihad 解隐写即可拿到正确的 flag。

flag{3dba7e5c09b0da5182a373e3cbb99670}

听说这是一个二维码

音频隐写 DeepSound 提取流量包

附件的末尾可以发现如下信息。

H4sIAECzhGIC/03KOwoCMRhF4T6ruCsQxdpKcWoR7WMekzCZ/4Y8COPqndLiFAe+4FIiPtygcKXMRbeedIuUCgp8FBtlRgsOWdc6WCzo948VdfcH3IiNHYtwIOw1okuiWf6QerKLhS9cYZ3L6j2FbI7L6TXdv+Zshlkflx/4ty9QiwAAAA==

将其用如下的 CyberChef 处理后可得如下信息。

From_Base64('A-Za-z0-9+/=',true,false)
Gunzip()
hello boy 
 Congratulations on finding the password of this song. Do you know how to unlock this song.
Sound from deep
VGhpc0k1UGFzc3cwcmQ=

将 VGhpc0k1UGFzc3cwcmQ= Base64 解码后得到如下信息。

ThisI5Passw0rd

将其作为密码可以使用 DeepSound 解出一个流量包。

ICMP 流量包分析

流量包中的流量的目的地址在规律变动,因此将其提取出来。

tshark -r flag.pcap -T fields -e ip.dst > a.txt

猜解其能表示像素点,因此用如下的 CyberChef 去处理,以0 和 255 表示两种颜色的像素,得到一张图片。

Decode_text('UTF-16LE (1200)')
Encode_text('UTF-8 (65001)')
Find_/_Replace({'option':'Regex','string':'172.16.(.*?).1'},'$1',true,false,true,false)
Find_/_Replace({'option':'Regex','string':'0\\r\\n'},'\\x00',true,false,true,false)
Find_/_Replace({'option':'Regex','string':'255\\r\\n'},'\\xFF',true,false,true,false)
Generate_Image('Greyscale',3,132)

扫描 DataMatrix 可得 flag。

flag{c736863427be5671102c039d43f0c75b}

涂色板

异或文件修正

CyberChef XOR BruteForce 得到文件与 0x20 异或后能得到 jpg 文件。

StegHide 隐写爆破

上述图片的末尾有文本 len4,StegDetect 无法检测出隐写,考虑 StegHide,采取如下指令爆破。

for num in {0001..9999}; do steghide extract -sf whathide.jpg -p $num -xf $num.txt; done

1235 处解出了如下信息文本。

玩过涂色板吗,五种颜色,相邻的颜色互不相同,那一共有多少种涂法呢?flag为结果的md5:)

暴力算法算邻接矩阵

将涂色板编上号,暴力出结果(DFS 亦可)。

matrix = [
    [0, 1, 0, 0, 0, 1, 1, 0],
    [1, 0, 1, 0, 0, 0, 0, 0],
    [0, 1, 0, 1, 1, 0, 0, 0],
    [0, 0, 1, 0, 1, 0, 0, 0],
    [0, 0, 1, 1, 0, 1, 0, 1],
    [1, 0, 0, 0, 1, 0, 1, 1],
    [1, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 1, 1, 0, 0]
]
color = [0, 0, 0, 0, 0, 0, 0, 0]
total = 0

for i in range(1, 6):
    color[0] = i
    for j in range(1, 6):
        color[1] = j
        for k in range(1, 6):
            color[2] = k
            for l in range(1, 6):
                color[3] = l
                for m in range(1, 6):
                    color[4] = m
                    for n in range(1, 6):
                        color[5] = n
                        for o in range(1, 6):
                            color[6] = o
                            for p in range(1, 6):
                                color[7] = p
                                flag = 1
                                for q in range(8):
                                    for r in range(8):
                                        if matrix[q][r] == 1:
                                            if color[q] == color[r]:
                                                flag = 0
                                                break
                                if flag:
                                    total += 1
print(total)

代码运行后可以得到如下结果。

27540

将其 MD5 后即可得到 flag。

flag{f10424d2b1cbf840765291e98f4ea293}

loginme

VeraCrypt 爆破

https://github.com/BillDietrich/veracryptcrack2

附件解压后可得 .hc 文件,采取爆破的措施得到了如下结果。

Wordlist file passwd.txt contains 35 words.

-----------------------------------
PIM: none     Keyfile: none
+ hashcat --force --status --hash-type=13721 --attack-mode=0 --workload-profile=2 loginme.hc wordlist.txt
+ set +x
loginme.hc:secret
Status...........: Cracked
Worked !  Done !

鼠标录制重放与分析

将 secret 作为密码后使用 VeraCrypt 挂载磁盘可得一个 .mrf 文件和一个压缩包。使用 MacroRecorder 重放鼠标录制得到如下图片。

使用 !@#¥ 作为密码解压压缩包后得到可执行文件和 CSV 文件。此处有第一个 PIN:QWER1234。接下来分析 CSV 文件,能得到其中有一段 Base64 编码的内容,将其解码后得到如下信息。

YWRTQG4=
adS@n

Windows 逆向<@usher>

分析 PIN.exe 获得第三个 PIN。

#include<stdio.h>
int deadt = 0x9E3779B9;

void TeaDecode(int* dec,int* key)
{
    int sum = deadt << 5;
    unsigned int a1 = dec[0];
    unsigned int a2 = dec[1];
    for (int i = 0; i < 32; ++i )
    {
        a2 -= ((sum ^ a1) + (a1 ^ key[(((sum >> 2)) & 3) ^ 1])) ^ (((16 * a1) ^ (a1 >> 3)) + ((a1 >> 5) ^ (4 * a1)));
        a1 -= ((sum ^ a2) + (a2 ^ key[(sum >> 2) & 3])) ^ (((16 * a2) ^ (a2 >> 3)) + ((a2 >> 5) ^ (4 * a2)));
        sum -= deadt;
    }
    dec[0] = a1;
    dec[1] = a2;
}

int main()
{
    int key[] = {20,20,37,4};
    int input[] = {0xAB96A21F,0x5D97A5E2};
    TeaDecode(input,key);

    printf("%d,%d\n", input[0], input[1]);
}
798
465

results matching ""

    No results matching ""